package com.harmony.pilot.knowledge.repository;

import com.harmony.pilot.knowledge.entity.FunctionDetail;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 函数详细信息Repository
 */
@Repository
public interface FunctionDetailRepository extends JpaRepository<FunctionDetail, Long> {
    
    /**
     * 根据snippet ID查询
     */
    FunctionDetail findBySnippetId(Long snippetId);
    
    /**
     * 根据函数名模糊查询
     */
    List<FunctionDetail> findByFunctionNameContaining(String functionName);
    
    /**
     * 根据类名查询
     */
    List<FunctionDetail> findByClassName(String className);
    
    /**
     * 根据命名空间查询
     */
    List<FunctionDetail> findByNamespaceName(String namespaceName);
    
    /**
     * 查找所有静态函数
     */
    List<FunctionDetail> findByIsStaticTrue();
    
    /**
     * 查找所有inline函数
     */
    List<FunctionDetail> findByIsInlineTrue();
    
    /**
     * 查找包含特定调用的函数
     */
    @Query("SELECT f FROM FunctionDetail f WHERE f.callsFunctions LIKE %:functionName%")
    List<FunctionDetail> findFunctionsThatCall(@Param("functionName") String functionName);
}

